use core::{Profiles, Workspace};
use core::registry::PackageRegistry;
use util::{CargoResult, human, ChainError, Config};
-use ops::{self, Layout, Context, BuildConfig, Kind, Unit};
+use ops::{self, Context, BuildConfig, Kind, Unit};
pub struct CleanOptions<'a> {
pub spec: &'a [String],
let resolve = try!(ops::resolve_ws(&mut registry, ws));
let packages = ops::get_resolved_packages(&resolve, registry);
- let dest = if opts.release {"release"} else {"debug"};
- let host_layout = try!(Layout::new(ws, None, dest));
- let target_layout = match opts.target {
- Some(target) => Some(try!(Layout::new(ws, Some(target), dest))),
- None => None,
- };
-
let profiles = try!(ws.current()).manifest().profiles();
- let mut cx = try!(Context::new(&resolve, &packages, opts.config,
- host_layout, target_layout,
- BuildConfig::default(),
+ let mut cx = try!(Context::new(ws, &resolve, &packages, opts.config,
+ BuildConfig {
+ release: opts.release,
+ requested_target: opts.target.map(|s| s.to_owned()),
+ ..BuildConfig::default()
+ },
profiles));
let mut units = Vec::new();
use core::{Package, PackageId, PackageSet, Resolve, Target, Profile};
-use core::{TargetKind, Profiles, Metadata, Dependency};
+use core::{TargetKind, Profiles, Metadata, Dependency, Workspace};
use core::dependency::Kind as DepKind;
use util::{self, CargoResult, ChainError, internal, Config, profile, Cfg, human};
}
impl<'a, 'cfg> Context<'a, 'cfg> {
- pub fn new(resolve: &'a Resolve,
+ pub fn new(ws: &Workspace<'cfg>,
+ resolve: &'a Resolve,
packages: &'a PackageSet<'cfg>,
config: &'cfg Config,
- host: Layout,
- target_layout: Option<Layout>,
build_config: BuildConfig,
profiles: &'a Profiles) -> CargoResult<Context<'a, 'cfg>> {
+
+ let dest = if build_config.release { "release" } else { "debug" };
+ let host_layout = try!(Layout::new(ws, None, &dest));
+ let target_layout = match build_config.requested_target.as_ref() {
+ Some(target) => {
+ Some(try!(Layout::new(ws, Some(&target), &dest)))
+ }
+ None => None,
+ };
+
let target = build_config.requested_target.clone();
let target = target.as_ref().map(|s| &s[..]);
let target_triple = target.unwrap_or_else(|| {
});
Ok(Context {
target_triple: target_triple,
- host: host,
+ host: host_layout,
target: target_layout,
resolve: resolve,
packages: packages,
})
}).collect::<Vec<_>>();
- let dest = if build_config.release {"release"} else {"debug"};
let root = try!(packages.get(resolve.root()));
- let host_layout = try!(Layout::new(ws, None, &dest));
- let target_layout = match build_config.requested_target.as_ref() {
- Some(target) => {
- Some(try!(layout::Layout::new(ws, Some(&target), &dest)))
- }
- None => None,
- };
-
- let mut cx = try!(Context::new(resolve, packages, config,
- host_layout, target_layout,
+ let mut cx = try!(Context::new(ws, resolve, packages, config,
build_config, profiles));
let mut queue = JobQueue::new(&cx);